package com.etc.aop.springaop;

import java.util.Date;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * 通用的业务部分 ;例如 日志记录,通用的执行效率检查
 * 
 * @author Administrator
 *
 */
public class Log {

	/**
	 * 这个方法是在 某个类的方法执行之前执行的 ，此方法可以认为是前置通知的方法
	 */
	public void before() {
		System.out.println("********要代理的方法准备执行*************" + new Date().toLocaleString());
	}

	public void after() {
		System.out.println("********要代理的方法执行完毕*************" + new Date().toLocaleString());
	}

	/**
	 * 环绕通知
	 * @param pjp
	 * @return
	 * @throws Throwable
	 */
	public Object around(ProceedingJoinPoint pjp) throws Throwable {

		// pjp调用对应的那个方法
		System.out.println("********around 要代理的方法准备执行*************" + new Date().toLocaleString());
		Object result = pjp.proceed();
		System.out.println("********around 要代理的方法准备执行*************" + new Date().toLocaleString());
		return result;
	}
}
